﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using GerTestes.Entity;
using GerTestes.Utilitarios;

namespace GerTestes.Especificao
{
    public partial class CasoRequisito : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregarProjetos();
            }
        }

        private void carregarProjetos()
        {
            ddlProjeto.Items.Clear();
            DataTable dtProjetos = ControlClass.CNProjetos.getProjetos("");
            DataView dtProjetosAtivos = dtProjetos.AsDataView();
            dtProjetosAtivos.RowFilter = "ATIVO = 'S' ";
            ddlProjeto.DataValueField = "ID_PROJETO";
            ddlProjeto.DataTextField = "DESCRICAO";
            ddlProjeto.DataSource = dtProjetosAtivos.ToTable();
            ddlProjeto.DataBind();
            ddlProjeto.Items.Insert(0, "Selecione");
        }

        private void carregarModulos()
        {
            ddlModulo.Items.Clear();
            ddlSubModulo.Items.Clear();
            gvwCasosRequisito.Visible = false;
            btnIncluir.Visible = false;
            if (ddlProjeto.SelectedIndex > 0)
            {
                int pProjeto = Convert.ToInt32(ddlProjeto.SelectedValue);
                ddlModulo.DataValueField = "ID_MODULO";
                ddlModulo.DataTextField = "DESCRICAO";
                DataTable dtModulos = ControlClass.CNModulos.getModulos(pProjeto);
                DataView dtModulosAtivos = dtModulos.AsDataView();
                dtModulosAtivos.RowFilter = "ATIVO = 'S' ";
                ddlModulo.DataSource = dtModulosAtivos.ToTable();
                ddlModulo.DataBind();
                ddlModulo.Items.Insert(0, "Selecione");
            }
        }

        private void carregarSubModulos()
        {
            ddlSubModulo.Items.Clear();
            gvwCasosRequisito.Visible = false;
            btnIncluir.Visible = false;
            if (ddlModulo.SelectedIndex > 0)
            {
                int pModulo = Convert.ToInt32(ddlModulo.SelectedValue);
                ddlSubModulo.DataValueField = "ID_SUBMODULO";
                ddlSubModulo.DataTextField = "DESCRICAO";
                DataTable dtSubModulos = ControlClass.CNSubModulos.getSubModulos(pModulo);
                DataView dtSubModulosAtivos = dtSubModulos.AsDataView();
                dtSubModulosAtivos.RowFilter = "ATIVO = 'S' ";
                ddlSubModulo.DataSource = dtSubModulosAtivos.ToTable();
                ddlSubModulo.DataBind();
                ddlSubModulo.Items.Insert(0, "Selecione");
            }
        }

        protected void ddlProjeto_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregarModulos();
        }

        protected void ddlModulo_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregarSubModulos();
        }

        protected void ddlSubModulo_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregarCasosRequisito();
        }

        private void carregarCasosRequisito()
        {
            int pSubModulo = Convert.ToInt32(ddlSubModulo.SelectedValue);
            gvwCasosRequisito.DataSource = ControlClass.CNCasosRequisito.getCasosRequisito(pSubModulo);
            gvwCasosRequisito.DataBind();
            gvwCasosRequisito.Visible = true;
            btnIncluir.Visible = true;
        }

        protected void btnIncluir_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = true;
            pnlCasoRequisito.Enabled = false;
            btnConfirmar.CommandName = "Incluir";
            lblDescricaoPnlInformacao.Text = "Inclusão Caso de Requisito";
            ThiagoSoftware.Upgrade.UtilForms.LimparCampos(pnlEdicao);
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            pnlEdicao.Visible = false;
            pnlCasoRequisito.Enabled = true;
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                CasoRequisitos caso = new CasoRequisitos();
                caso.CodSubModulo = Convert.ToInt32(ddlSubModulo.SelectedValue);
                caso.Descricao = TxtDescricao.Text.ToUpper();
                caso.Observacao = TxtObservacao.Text.ToUpper();
                if (ChkAtivo.Checked)
                    caso.Ativo = "S";
                else caso.Ativo = "N";
                if (btnConfirmar.CommandName == "Incluir")
                {
                    if (ControlClass.CNCasosRequisito.incluirCasoRequisito(caso))
                    {
                        pnlEdicao.Visible = false;
                        pnlCasoRequisito.Enabled = true;
                        carregarCasosRequisito();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoInserir, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
                else if (btnConfirmar.CommandName == "Alterar")
                {
                    caso.CodCasoRequisito = Convert.ToInt32(ViewState["ID_CASO_REQUISITO"]);
                    if (ControlClass.CNCasosRequisito.alterarCasoRequisito(caso))
                    {
                        pnlEdicao.Visible = false;
                        pnlCasoRequisito.Enabled = true;
                        carregarCasosRequisito();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoAlterar, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
            }
            catch (Exception)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.Erro, "") + "', function() {});", true);
            }
        }

        protected void gvwCasosRequisito_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Alert de Confirmação
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Passando por todas as linhas
                foreach (DataControlFieldCell cell in e.Row.Cells)
                {
                    // Verificando todas as colunas da linha
                    foreach (Control control in cell.Controls)
                    {
                        //No caso o botão é do tipo Imagem Button
                        ImageButton button = control as ImageButton;
                        if (button != null && button.CommandName == "Excluir")
                        {
                            // Adicionando a mensagem javascript
                            button.OnClientClick = "return ShowConfirm('Tem certeza que deseja excluir?', '" + button.ClientID + "');";
                        }
                    }
                }
            }
            #endregion

            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[4].Text.Trim()) == "S")
                    controle.ImageUrl = "~/assets/img/ativo.png";
                else
                    controle.ImageUrl = "~/assets/img/inativo.png";
                e.Row.Cells[4].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
            }
            #endregion

        }

        protected void gvwCasosRequisito_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButton button = (ImageButton)e.Row.FindControl("ImgExcluir");
                button.CommandArgument = e.Row.RowIndex.ToString();

                ImageButton button2 = (ImageButton)e.Row.FindControl("ImgAlterar");
                button2.CommandArgument = e.Row.RowIndex.ToString();
            }
        }

        protected void gvwCasosRequisito_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                CasoRequisitos casoRequisito = new CasoRequisitos();
                int index = int.Parse((String)e.CommandArgument);
                casoRequisito.CodCasoRequisito = Convert.ToInt32(gvwCasosRequisito.DataKeys[index]["ID_CASO_REQUISITO"].ToString());
                casoRequisito = ControlClass.CNCasosRequisito.getDadosCasosRequisito(casoRequisito.CodCasoRequisito);
                if (e.CommandName == "Alterar")
                {
                    TxtDescricao.Text = casoRequisito.Descricao.ToUpper();
                    TxtObservacao.Text = casoRequisito.Observacao.ToUpper();
                    ViewState["ID_CASO_REQUISITO"] = casoRequisito.CodCasoRequisito;
                    ChkAtivo.Checked = casoRequisito.Ativo == "S";
                    lblDescricaoPnlInformacao.Text = "Alteração Caso de Requisito";
                    pnlCasoRequisito.Enabled = false;
                    pnlEdicao.Visible = true;
                    btnConfirmar.CommandName = "Alterar";
                }
                else if (e.CommandName == "Excluir")
                {
                    if (ControlClass.CNCasosRequisito.excluirCasoRequisito(casoRequisito.CodCasoRequisito))
                    {
                        carregarCasosRequisito();
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.SucessoExcluir, "") + "', function() {});", true);
                    }
                    else
                    {
                        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.ErroSimples, "") + "', function() {});", true);
                    }
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", "bootbox.alert('" + Mensagens.obterMsg((int)EnumGerTestes.Mensagem.Erro, "") + "', function() {});", true);
            }
        }
    }
}